package com.second.common.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @program: clms-second
 * @description: 返回结果公共实体类
 * @author: Lv Yongqi
 * @create: 2021-07-21 15:13
 **/
@Data
@ApiModel(value = "返回结果工具类")
public class R {

    @ApiModelProperty("响应状态码")
    private Integer code;

    @ApiModelProperty("响应状态消息")
    private String message;

    @ApiModelProperty("响应对象数据")
    private Object object;

    @ApiModelProperty("响应集合数据")
    private List listData;

    @ApiModelProperty("用户的token信息")
    private String token;
    @ApiModelProperty(value = "返回数据")
    private Map<String, Object> result = new HashMap<String, Object>();
    /**
     * 无参构造方法私有化
     */
    private R() {}

    /**
     * 成功静态方法
     * @return
     */
    public static R success() {
        R r = new R();
        r.setMessage(ResultData.MESSAGE_SUCCESS.getMessage());
        r.setCode(ResultData.CODE_SUCCESS.getCode());
        return r;
    }

    /**
     * 失败静态方法
     * @return
     */
    public static R error() {
        R r = new R();
        r.setMessage(ResultData.MESSAGE_ERROR.getMessage());
        r.setCode(ResultData.CODE_ERROR.getCode());
        return r;
    }

    /**
     *  添加object类型数据
     * @param object 响应的object类型数据
     * @return R工具类
     */
    public R putObject(Object object) {
        this.setObject(object);
        return this;
    }




    /**
     *  添加List<T>集合泛型数据
     * @param listData 响应的数据集合
     * @return R工具类
     */
    public R putListData(List listData) {
        this.setListData(listData);
        return this;
    }

}
